package svm.coelce.parser.data;

import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DadosDaParcela {
	private String
						ucCoelce,
						numeroContrato,
						numeroContratoComplementar,
						numeroBancario,
						situacaoDoContrato,
						tipoCobranca;

	private Integer
						parcelaGestor,
						codigoSituacao,
						codigoDoProduto;

	private BigDecimal
						valorIndividualDaParcela,
						valorTotalDaParcela,
						saldoParcela;

	private Boolean
						parcelaProcessada;

	public DadosDaParcela(){}

	public DadosDaParcela( ResultSet resultadoConsulta ){
		try {
			this.setUcCoelce(					resultadoConsulta.getString(	"uc_coelce"			) );
			this.setNumeroContrato(				resultadoConsulta.getString(	"nr_contrato"		) );
			this.setNumeroContratoComplementar(	resultadoConsulta.getString(	"nr_contrato_compl"	) );
			this.setParcelaGestor(				resultadoConsulta.getInt(		"parcela_gestor"	) );
			this.setNumeroBancario(				resultadoConsulta.getString(	"nr_bancario"		) );
			this.setCodigoSituacao(				resultadoConsulta.getInt(		"cod_situacao"		) );
			this.setSituacaoDoContrato(			resultadoConsulta.getString(	"sit_contrato"		) );
			this.setCodigoDoProduto(			resultadoConsulta.getInt(		"cod_produto"		) );
			this.setTipoCobranca(				resultadoConsulta.getString(	"tp_cobranca"		) );

			this.setValorIndividualDaParcela( new BigDecimal( resultadoConsulta.getDouble( "valor_parcela" ) ) );
			this.setValorTotalDaParcela( this.getValorIndividualDaParcela() );
			this.setSaldoParcela( new BigDecimal( resultadoConsulta.getDouble( "saldo_parcela" ) ) );

			this.setParcelaProcessada( false );

		} catch (SQLException sqlException) {
			sqlException.printStackTrace();
		}
	}

	public String getUcCoelce() {
		return ucCoelce;
	}

	public void setUcCoelce(String ucCoelce) {
		this.ucCoelce = ucCoelce;
	}

	public String getNumeroContrato() {
		return numeroContrato;
	}

	public void setNumeroContrato(String numeroContrato) {
		this.numeroContrato = numeroContrato;
	}

	public String getNumeroContratoComplementar() {
		return numeroContratoComplementar;
	}

	public void setNumeroContratoComplementar(String numeroContratoComplementar) {
		this.numeroContratoComplementar = numeroContratoComplementar;
	}

	public String getNumeroBancario() {
		return numeroBancario;
	}

	public void setNumeroBancario(String numeroBancario) {
		this.numeroBancario = numeroBancario;
	}

	public String getSituacaoDoContrato() {
		return situacaoDoContrato;
	}

	public void setSituacaoDoContrato(String situacaoDoContrato) {
		this.situacaoDoContrato = situacaoDoContrato;
	}

	public String getTipoCobranca() {
		return tipoCobranca;
	}

	public void setTipoCobranca(String tipoCobranca) {
		this.tipoCobranca = tipoCobranca;
	}

	public Integer getParcelaGestor() {
		return parcelaGestor;
	}

	public void setParcelaGestor(Integer parcelaGestor) {
		this.parcelaGestor = parcelaGestor;
	}

	public Integer getCodigoSituacao() {
		return codigoSituacao;
	}

	public void setCodigoSituacao(Integer codigoSituacao) {
		this.codigoSituacao = codigoSituacao;
	}

	public Integer getCodigoDoProduto() {
		return codigoDoProduto;
	}

	public void setCodigoDoProduto(Integer codigoDoProduto) {
		this.codigoDoProduto = codigoDoProduto;
	}

	public BigDecimal getValorIndividualDaParcela() {
		return valorIndividualDaParcela;
	}

	public void setValorIndividualDaParcela( BigDecimal valorIndividualDaParcela ){
		this.valorIndividualDaParcela = valorIndividualDaParcela.round( java.math.MathContext.DECIMAL32 );
	}

	public BigDecimal getSaldoParcela() {
		return saldoParcela;
	}

	public void setSaldoParcela(BigDecimal saldoParcela) {
		this.saldoParcela = saldoParcela;
	}

	public Boolean getParcelaProcessada() {
		return parcelaProcessada;
	}
	
	public void setParcelaProcessada(Boolean parcelaProcessada) {
		this.parcelaProcessada = parcelaProcessada;
	}

	public BigDecimal getValorTotalDaParcela() {
		return valorTotalDaParcela;
	}

	public void setValorTotalDaParcela(BigDecimal valorTotalDaParcela) {
		this.valorTotalDaParcela = valorTotalDaParcela;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((numeroContrato == null) ? 0 : numeroContrato.hashCode());
		result = prime * result
				+ ((parcelaGestor == null) ? 0 : parcelaGestor.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		DadosDaParcela other = (DadosDaParcela) obj;
		if (numeroContrato == null) {
			if (other.numeroContrato != null)
				return false;
		} else if (!numeroContrato.equals(other.numeroContrato))
			return false;
		if (parcelaGestor == null) {
			if (other.parcelaGestor != null)
				return false;
		} else if (!parcelaGestor.equals(other.parcelaGestor))
			return false;
		return true;
	}
}
